package exception02;

/**
 * throws关键字处理异常
 *   当方法抛出异常对象时候(编译时异常),我们为了让调用者知晓这个方法可能抛出异常
 *   需要在方法上通过throws关键字声明异常类(把可能出现的问题表现出来,让调用者知道)
 *   格式:
 *     修饰符 返回值类型 方法名(形参列表) throws 异常类名1,异常类名,.....{
 *
 *     }
 */
public class ExceptionDemo03 {
    public static void main(String[] args) throws Exception {//main上的throws声明是给jvm虚拟机看的
        //正常使用
/*        int totalPrice = getTotalPrice(2, 30);
        System.out.println(totalPrice);*/

        //传入负值的单价,打印负的总价,不符合显现实业务需求
/*        int totalPrice1 = getTotalPrice(-2, 30);
        System.out.println(totalPrice1);*/
        int totalPrice = getTotalPrice(2, -30);
        System.out.println(totalPrice);
    }


    /**
     *
     * @param price 商品单价
     * @param amount 商品数量
     * @return 商品总价 = 商品单价*商品数量
     * @throws Exception
     */
    public static int getTotalPrice(int price, int amount) throws Exception {//在getTotalPrice方法上的throws声明是给调用该方法看的
        //当调用该方法者看到throws声明时便会知晓需要处理
        if (price < 0) {
            throw new Exception("单价不能为负值:" + price);
        }
        if (amount < 0) {
            throw new Exception("数量不能为负值:" + amount);
        }
        return price * amount;
    }
}
